From f0a60fa636c0caeca43fc98e905598f0578749ee Mon Sep 17 00:00:00 2001 From: Keir Fraser Date: Mon, 30 Nov 2009 10:38:58 +0000 Subject: [PATCH] x86/mm: set_p2m_entry() should return 0 on error set_p2m_entry() ignores halfway errors. It should return 0 on error. Signed-off-by: Kouya Shimura Acked-by: Tim Deegan --- xen/arch/x86/mm/p2m.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c index aebfdd18a6..df992586b8 100644 --- a/xen/arch/x86/mm/p2m.c +++ b/xen/arch/x86/mm/p2m.c @@ -1497,7 +1497,7 @@ int set_p2m_entry(struct domain *d, unsigned long gfn, mfn_t mfn, { unsigned long todo = 1ul << page_order; unsigned int order; - int rc = 0; + int rc = 1; while ( todo ) { @@ -1506,7 +1506,8 @@ int set_p2m_entry(struct domain *d, unsigned long gfn, mfn_t mfn, 9 : 0; else order = 0; - rc = d->arch.p2m->set_entry(d, gfn, mfn, order, p2mt); + if ( !d->arch.p2m->set_entry(d, gfn, mfn, order, p2mt) ) + rc = 0; gfn += 1ul << order; if ( mfn_x(mfn) != INVALID_MFN ) mfn = _mfn(mfn_x(mfn) + (1ul << order)); -- 2.30.2